// console.log("service-worker.js background");

// // chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
// //     new Promise((resolve, reject) => {
// //         if (typeof request !== 'object' || !request.type) {
// //             console.error('参数异常');
// //             reject(`消息 ${JSON.stringify(request)} 格式不符合规范`);
// //             return;
// //         }
// //         switch (request.type) {
// //             case 'get':
// //                 fetch(request.url).then((res) => {
// //                     resolve(res.json());
// //                 }).catch(reject);
// //                 break;
// //             case 'post':
// //                 fetch(request.url, {
// //                     method: 'POST',
// //                     headers: {
// //                         'Content-Type': 'application/json',
// //                     },
// //                     body: JSON.stringify(request.body),
// //                 }).then((res) => {
// //                     resolve(res.json());
// //                 }).catch(reject);
// //                 break;
// //             case 'test':
// //                 resolve('测试');
// //                 break;
// //         }
// //     }).then((res) => {
// //         sendResponse(res);
// //     }).catch((error) => {
// //         console.error(error);
// //         sendResponse({ error: error.message });
// //     });
// //     return true;
// // });

// // export function getData(message) {
// //     return new Promise((resolve) => {
// //         chrome.runtime.sendMessage(message, resolve);
// //     });
// // }

console.log("service-worker.js background");

// chrome.runtime.onInstalled.addListener(() => {


// 添加动态规则，拦截 /dex 请求并去掉 /dex
// chrome.declarativeNetRequest.updateDynamicRules({
//     addRules: [
//         {
//             id: 1,
//             priority: 1,
//             action: {
//                 type: "redirect",
//                 redirect: {
//                     regexSubstitution: "https://www.dextec.site" // 这里需要根据实际情况调整
//                 }
//             },
//             condition: {
//                 regexFilter: "^https://www\\.dextec\\.site/dex(/.*)?",
//                 resourceTypes: ["xmlhttprequest"]
//             }
//         }
//     ],
//     removeRuleIds: [1] // 确保规则不会重复添加
// });
// });
// 设置代理
chrome.runtime.onInstalled.addListener(() => {
    chrome.proxy.settings.set({
        value: {
            mode: "auto_detect",
            // rules: {
            //     singleProxy: {
            //         scheme: "https",
            //         host: "www.dextec.site"
            //         // port: 443
            //     }
            // }
        },
        scope: "regular"
    }, () => {
        console.log("代理已设置");
    });
})



// import axios from "axios";

// 监听消息以支持跨域请求
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    console.log(request, 'reqqqqqqqqqqqqqqq');
    if (request.type === "proxy" && request.url === "/dex/upload") {
        chrome.storage.local.get('token', (data) => {
            const token = data.token;
            const formData = new FormData();
            const file = new File([new Uint8Array(request.fileBuffer)], request.fileName, { type: request.fileType });
            formData.append('file', file);

            fetch('https://www.dextec.site/dex/upload', {
                method: 'POST',
                headers: {
                    'Authorization': `Bearer ${token}`
                },
                body: formData
            })
                .then(response => response.json())
                .then(data => {
                    sendResponse(data);
                })
                .catch(error => {
                    sendResponse({ error: error.message });
                });
        });
        return true;
    }
    // 其他 proxy 请求保持原样
    if (request.type === "proxy") {
        chrome.storage.local.get('token', (data) => {
            const token = data.token;
            const headers = {
                'Authorization': `Bearer ${token}`,
                'Content-Type': 'application/json'
            };
            fetch('https://www.dextec.site' + request.url, {
                method: 'POST',
                headers: headers,
                body: JSON.stringify(request.body)
            })
                .then(response => {
                    if (!response.ok) {
                        throw new Error(`HTTP error! status: ${response.status}`);
                    }
                    return response.json();
                })
                .then(data => {
                    sendResponse(data);
                })
                .catch(error => {
                    sendResponse({ error: error.message });
                });
        });
        return true;
    }
});

// 设置代理服务器
// chrome.runtime.onInstalled.addListener(() => {
//     chrome.proxy.settings.set(
//         {
//             value: {
//                 mode: "pac_script",
//                 pacScript: {
//                     data: `
//                         function FindProxyForURL(url, host) {
//                             if (url.startsWith("https://www.dextec.site/")) {
//                                 return "HTTPS www.dextec.site:443";
//                             }
//                             return
//                         }
//                     `
//                 }
//             },
//             scope: "regular"
//         },
//         () => {
//             console.log("PAC 脚本代理已设置");
//         }
//     );

//     // 添加动态规则，拦截 /dex 请求并去掉 /dex
//     chrome.declarativeNetRequest.updateDynamicRules({
//         addRules: [
//             {
//                 id: 1,
//                 priority: 1,
//                 action: {
//                     type: "redirect",
//                     redirect: {
//                         regexSubstitution: "https://www.dextec.site\\1"
//                     }
//                 },
//                 condition: {
//                     regexFilter: "^https://www\\.dextec\\.site/dex(/.*)?",
//                     resourceTypes: ["xmlhttprequest"]
//                 }
//             }
//         ],
//         removeRuleIds: [1] // 确保规则不会重复添加
//     });
// });

// // 监听消息以支持跨域请求
// chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
//     console.log("Received request:", request);
//     console.log("Sender:", sender);
//     console.log("SendResponse:", sendResponse);


//     if (request.type === "proxy") {
//         fetch(request.url, {
//             method: request.method || "GET",
//             headers: request.headers || {},
//             body: request.body ? JSON.stringify(request.body) : undefined
//         })
//             .then((response) => response.json())
//             .then((data) => sendResponse({ success: true, data }))
//             .catch((error) => sendResponse({ success: false, error: error.message }));
//         return true; // 表示异步响应
//     }
// });

// 设置专属代理规则
// chrome.runtime.onInstalled.addListener(() => {
//     console.log('ss设置代理');

//     chrome.proxy.settings.set({
//         value: {
//             mode: "pac_script",
//             pacScript: {
//                 data: `
//           function FindProxyForURL(url, host) {
//             return (url.includes('/dex'))
//               ? "PROXY https://www.dextec.site"
//               : "DIRECT";
//           }`
//             }
//         },
//         scope: "regular"
//     });
// })



// chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
//     console.log(request, 'wwwwwwwwwwwwwwwwwwwwwwwwwwwsdddddddddd');

//     if (request.type === "proxy") {
//         console.log(`[代理请求] 方法: ${request.method}, 地址: ${request.url}`);

//         fetch(request.url, {
//             method: request.method,
//             headers: {
//                 "Content-Type": "application/json",
//             },
//         })
//             .then((response) => response.text())
//             .then((data) => {
//                 console.log(`[代理成功] 数据: ${data}`);
//                 sendResponse({ status: 200, data });
//             })
//             .catch((error) => {
//                 console.error(`[代理失败] 错误: ${error}`);
//                 sendResponse({ status: 500, error: error.message });
//             });

//         return true; // 表示异步响应
//     }
// });
